package lib;

public class Element {
	
	/**
	 * <h1>Attribut <b>valeur</b></h1>
	 * 
	 * La valeur de l'élement
	 * 
	 */
	private int valeur;
	
	/**
	 * <h1>Attribut <b>elementSuivant</b></h1>
	 * 
	 * Permet de définir quel élément sera placé après celui-ci dans le cas d'une implémentation en liste personnalisée. 
	 * Inutile dans les autres cas. 
	 * 
	 */
	private Element elementSuivant=null;
	
	/**
	 * <h1>Constructeur <b>Ensemble</b></h1>
	 * 
	 * Constructeur de la classe abstraite Element. Permet de créer un élement pour une valeur donnée.
	 * 
	 * @param <b>valeur</b> La valeur dde l'instance d'élement
	 */
	public Element (int valeur)
	{
		this.setValeur(valeur);
	}

	/**
	 * <h1>Constructeur <b>Ensemble</b></h1>
	 * 
	 * Constructeur de la classe abstraite Element. 
	 * Permet de créer un élement pour une valeur donnée, et permet de préciser l'élement suivant.
	 * A utiliser dans une implémentation de liste personnalisée
	 * 
	 * @param <b>valeur</b> La valeur dde l'instance d'élement
	 * @param <b>suivant</b> L'élement suivant de celui instancié
	 */
	public Element (int valeur, Element suivant)
	{
		this(valeur);
		this.setElementSuivant(suivant);
	}
	
	/**
	 * <h1>Méthode <b>getValeur</b></h1>
	 * 
	 * Méthode qui permets d'accéder aux données de l'élement.
	 * @return la valeur de l'élement
	 */
	public int getValeur() {
		return valeur;
	}

	/**
	 * <h1>Méthode <b>setValeur</b></h1>
	 * 
	 * Permet de changer la valeur de l'élement.
	 * 
	 * @prama <b>valeur</b> La valeur de l'élement
	 */
	public void setValeur(int valeur) {
		this.valeur = valeur;
	}

	/**
	 * <h1>Méthode <b>getElementSuivant</b></h1>
	 * 
	 * Méthode qui permets de connaitre l'élement suivant. return null si l'élement n'éxiste pas
	 * @return l'élement suivant
	 */
	public Element getElementSuivant() {
		return elementSuivant;
	}

	/**
	 * <h1>Méthode <b>setElementSuivant</b></h1>
	 * 
	 * Permet de changer l'élement suivant. (Par exemple, pour supprimer un élement d'une liste personnalisée)
	 * 
	 * @prama <b>elementSuivant</b> Le prochain élement
	 */
	public void setElementSuivant(Element elementSuivant) {
		this.elementSuivant = elementSuivant;
	}
}

